The present exemplary embodiment relates to motion control and planning algorithms. It finds particular application with increasing the accuracy and lowering execution time of trajectories by improving blending between moves associated therewith. In one example, an algorithm is utilized to control the trajectory of a robot. However, it is to be appreciated that the present exemplary embodiment is also amenable to other like applications.
The production of goods generally includes movement in one or more axes to facilitate their assembly and manufacture. In one example, robotics are employed to bring components to a product as it moves through an assembly process. In this manner, the robot picks up a component from an offline tray and moves the component to an appropriate location on the product for assembly. The motion can involve rapid and precise movement to insure that production is accomplished at an optimum speed.
In some cases, the motion required from one location to another can involve specific obstacles that prevent the use of a direct path between a start and end point. As a result, an indirect path must be employed. This indirect path can require the programming of a robot or other automated motion device to follow a path that avoids the obstacle while minimizing the time lost in executing the full motion path. Typically, the path that is followed is comprised of a plurality of moves that are executed in series. Thus, the granularity of the motion path is easy to control as there are an infinite number of moves that can be programmed to accomplish substantially any motion path.
To facilitate motion within a production environment, automated machines (e.g., robots) can be programmed with a set of instructions that dictate the location, speed, path, etc, of their motion. These instructions can be executed in succession based on instruction type, location within an instruction set, priority, etc. Further, the instructions can be based upon substantially any coordinate system such as a Cartesian coordinate system, a non-Cartesian coordinate system, a SCARA robot, a Delta robot, a cylindrical, a spherical, a polar, a picker, an articulated dependent, and an articulated independent joint space.
In addition, instructions can be executed in relation to an event within a motion profile. In one example, an instruction can be executed once a particular parameter is met, such as an acceleration value. A more detailed treatment of the creation and execution of motion instructions is presented in Weinhofer, et al. (U.S. Pat. No. 7,180,253) which is incorporated in its entirety herein.
One difficulty with programming motion is transitioning between each of the plurality of disparate paths. A particular motion path (for example a pick and place cycle) may require three different moves between a start and an end point. In this case, there are two points where motion transitions between moves. The first transition is between the first and second move and the second transition is between the second and third move. It is to be appreciated that if N is the number of moves in a particular path, N−1 is the number of transition points associated therewith.
A blend radius can be employed to define the beginning and end of a transition. The blend radius can be expressed as the distance from a move's endpoint wherein the next move's instructions are simultaneously executed. Conventionally, there is no guarantee that blending will occur only within the blend radius. Some combinations of move lengths and other move parameters can cause the moves to blend outside the blend radius which can cause undesired motion. In one example, the transition within a second blend radius can occur before the transition in a first blend radius has been complete which can cause undesired movement and associated deleterious effects. Thus, what are needed are systems and methods that facilitate accurate, rapid transitions between moves within motion applications.